package com.itheima.d_case;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/**
 * 案例四：随机排名。某公司开发部5名开发人员，要进行项目进展汇报演讲，现在采取随机排名后进行汇报。请先依次录入5名员工的工号，然后展示出一组随机的排名顺序。
 * <p>
 * 分析：
 * 1、由于5名员工的工号不清楚，所以动态初始化创建长度为5数组。
 * 2、创建键盘录入Scanner和随机数Random对象
 * 3、遍历数组，使用键盘录入5个数保持到数组中。
 * 4、继续遍历数组，得到每一个元素，再随机一个索引值，让当前元素与随机索引处的元素进行交换。
 * 5、打印随机排名后的结果
 */
public class CaseDemo04 {

    public static void main(String[] args) {
        //1 由于5名员工的工号不清楚，所以动态初始化创建长度为5数组。
        int[] arr = new int[5];

        //2 创建键盘录入Scanner和随机数Random对象
        Scanner sc = new Scanner(System.in);
        Random r = new Random();

        //3 遍历数组，使用键盘录入5个数保持到数组中。
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个员工的工号：");
            //保存到数组
            arr[i] = sc.nextInt();
        }
        System.out.println("打乱前：" + Arrays.toString(arr));
        //4 继续遍历数组，得到每一个元素，再随机一个索引值，让当前元素与随机索引处的元素进行交换。
        for (int i = 0; i < arr.length; i++) {
            //随机一个索引值
            int index = r.nextInt(arr.length);
            //交换i索引和index索引处的值
            int temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
        //5 打印随机排名后的结果,,Arrays.toString(arr)作用：取出数组中的内容并打印，不用遍历打印
        System.out.println("打乱后：" + Arrays.toString(arr)); //[10,20,33,12,60]

    }
}
